package com.java;

/**
 * 礼让线程
 */
public class YieldThread {
    static class ThreadSon extends Thread {
        @Override
        public void run() {
            System.out.println("线程(" + Thread.currentThread().getName() + ")开始");

            for (int i = 0; i < 5; i++) {
                System.out.println("线程(" + Thread.currentThread().getName() + ")运行中");
                Thread.yield(); // ⭐⭐⭐
            }

            System.out.println("线程(" + Thread.currentThread().getName() + ")结束");
        }
    }

    public static void main(String[] args) {
        new ThreadSon().start();
        new ThreadSon().start();
    }

    /**
     * 输出结果如下，每次运行的结果不同！礼让的两线程的CPU交替次数更加多
     * 线程(Thread-1)开始
     * 线程(Thread-0)开始
     * 线程(Thread-0)运行中
     * 线程(Thread-1)运行中
     * 线程(Thread-0)运行中
     * 线程(Thread-1)运行中
     * 线程(Thread-1)运行中
     * 线程(Thread-1)运行中
     * 线程(Thread-1)运行中
     * 线程(Thread-1)结束
     * 线程(Thread-0)运行中
     * 线程(Thread-0)运行中
     * 线程(Thread-0)运行中
     * 线程(Thread-0)结束
     */
}
